import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'

NProgress.configure({ showSpinner: false })

const whiteList = ['/login']
router.beforeEach(async (to, from, next) => {
  NProgress.start()
  if (getToken()) {
    // 有token 【已登录】
    if (to.path === '/login') {
      // 已经登录过还去登录页就跳转到后台主页
      next('/')
      NProgress.done()
    } else {
      // 去的不是登录页，判断是否有用户信息
      if (!store.getters.uid) {
        // 拉取用户资料，处理路由问题
        await store.dispatch('user/getUserInfo')
        // 注意这里一定是要用next(to.path)
        next(to.path)
      } else {
        next()
      }
    }
  } else {
    // 如果没有token【没登录】
    if (whiteList.includes(to.path)) { // 白名单中放行
      next()
    } else { // 不在跳转到登录
      next('/login?redirect=' + to.path) // 跳到登录页
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  NProgress.done()
})
